package 多线程.复习.线程方法;

public class 单例模式 {
    private static 单例模式 single = new 单例模式();
    private 单例模式(){}//私有化构造方法。
    public  static 单例模式 getObject(){
        return single;//通过这个方法来返回这个唯一的对象
    }
}
class LizeTon{
    private static volatile LizeTon lizeTon ;
    private LizeTon(){}
    //直接在获取对象的方法上加synchronized关键字，来保证原子性和可见性。
    private static LizeTon getLizeTon(){
        if (lizeTon == null){//多个线程可以同时进入该方法，
            synchronized (LizeTon.class){//在这里会阻塞多个线程
                if(lizeTon == null){//一个线程执行结束后，其他线程进来再次读lizeTon，保证不会重复创建对象
                    lizeTon = new LizeTon();
                }
            }
        }
        return lizeTon;
    }
}
